package com.abl.service;


import com.abl.common.mybatis.model.Dnt;
import com.abl.common.util.ContextKit;
import com.abl.common.util.JwtKit;
import com.abl.common.util.http.RequestKit;
import com.abl.service.system.SysUserService;
import com.alibaba.fastjson2.JSONArray;

public interface BaseService {
    /**
     * 当前token
     */
    default String token() {
        return RequestKit.request().getHeader("Token");
    }

    /**
     * 当前tokenId
     */
    default String tokenId() {
        return JwtKit.tokenId(token());
    }

    /**
     * 当前登录的用户ID
     */
    default Object loginUserId() {
        return JwtKit.getParam(token(), "userId");
    }

    /**
     * 当前登录的用户，角色ID
     */
    default JSONArray loginUserRoleIds() {
        return (JSONArray) JwtKit.getParam(token(), "roleIds");
    }

    /**
     * UserId对应的用户信息
     */
    default Dnt userInfo(Object userId) {
        return ContextKit.getBean(SysUserService.class).userInfo(userId);
    }

    /**
     * 当前登录的用户信息
     */
    default Dnt loginUserInfo() {
        return userInfo(loginUserId());
    }

    //
    //    //当前角色ID
    //    default List<Object> roleIds() {
    //        return JwtKit.getRoleIds(token());
    //    }

    //
//    /**
//     * 空返回true
//     */
//    default boolean isBlank(Object o) {
//        return StrKit.isBlank(o);
//    }
//
//    /**
//     * 非空返回true
//     */
//    default boolean notBlank(Object o) {
//        return !StrKit.isBlank(o);
//    }
//
//
//    /**
//     * 根据 MD5(明文账号+明文密码)，返回加密后的字符串
//     *
//     * @param accountAndPasswordToMd5 MD5(明文账号+明文密码)
//     * @return 数据库中所存字符串
//     */
//    default String getPassword(String accountAndPasswordToMd5) {
//        String str = accountAndPasswordToMd5.toUpperCase() + dictService().getValue("system_server_salt", "u123whuhdu1sag22yfw333oqi55hjasd");
//        return MathKit.getMD5(str);
//    }
//
//    /**
//     * 根据明文账号密码，返回加密后的字符串
//     *
//     * @param accountPlainText  明文账号
//     * @param passwordPlainText 明文密码
//     * @return 数据库中所存字符串
//     */
//    default String getPassword(String accountPlainText, String passwordPlainText) {
//        return getPassword(MathKit.getMD5(accountPlainText + passwordPlainText));
//    }
//
//
//    default DictService dictService() {
//        return ContextKit.getBean(DictService.class);
//    }

}
